#ifndef __OPERAND_H__
#define __OPERAND_H__

enum { OP_TYPE_REG, OP_TYPE_IMM, OP_TYPE_JUMP };

#define OP_STR_SIZE 40

typedef struct {
	uint32_t type; //操作苏类型 r还是i
	union {
		uint32_t reg;//寄存器编号
		uint32_t imm;//立即数
		int32_t simm;//符号扩展的立即数
		int32_t instr_index;//指令索引
	};
	uint32_t val;//操作数实际值
} Operand;

typedef struct {
	uint32_t opcode1; //操作码1
	uint32_t opcode2; //操作码2
	uint32_t opcode3; //操作码2
	Operand src1, src2, dest; //源操作数1 源操作数2 目标操作数
} Operands;

#endif
